package portal.mybatis.dao.service;


import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import portal.mybatis.dao.User;
import portal.mybatis.dao.mapper.UserMapper;
import utils.Log4jInit;

import java.util.List;

@Service
public class UserService {

    @Autowired
    UserMapper userMapper;
    /**
     * 查询用户是否存在
     * @param userName 用户名称
     * @return 用户对象
     */
    private User selectByUserName(String userName){
        if(userName==null) return null;
        return userMapper.selectByUserName(userName);
    }

    /**
     * 查询用户详情
     * @param userId 用户Id
     * @return 用户对象
     */
    public User selectByUserId(int userId){
    	Log4jInit.logger.info("555");
    	Log4jInit.logger.info(""+System.currentTimeMillis());
        return userMapper.selectByUserId(userId);
    }

    /**
     * 检查用户账号密码是否正确，如果正确返回用户信息
     * @param userName 用户名称
     * @param userPassword 用户密码
     * @return 用户对象
     */
    public User checkUser(String userName, String userPassword){
        if(userName==null||userPassword==null) return null;
        return userMapper.checkUser(userName,userPassword);
    }

    /**
     * 通过用户Id获取用户名
     * @param userId 用户Id
     * @return 用户名称
     */
    public String getUserNameById(int userId){
        if(userId<1) return null;
        return userMapper.getUserNameById(userId);
    }

    /**
     * 新增用户
     * @param user 用户对象
     * @return 用户已存在返回0,成功返回1
     */
    public int addUser(User user){
        if(user==null) return -1;
        return userMapper.addUser(user);
    }

    /**
     * 分页查询用户
     * @param onePageCount 一页的数量
     * @param currentPage 第几页
     * @return 返回用户对象列表
     */
    public List<User> selectUserByPage(Integer onePageCount, Integer currentPage){
        if(onePageCount==null||currentPage==null||onePageCount<1||currentPage<1) return  null;
        int currentPosition = (currentPage-1)*onePageCount;
        return userMapper.selectUserByPage(onePageCount,currentPosition);
    }

    /**
     * 查询用户页数
     * @param onePageCount 一页的数量
     * @return 页数
     */
    public int userPageNum(Integer onePageCount){
        if(onePageCount==null||onePageCount<1) return -1;
        int pageNum = userMapper.userNum(onePageCount);
        return (pageNum%onePageCount==0)?(pageNum/onePageCount):(pageNum/onePageCount+1);
    }

    /**
     * 删除用户
     * @param userId 用户Id
     * @return 真/假
     */
    public boolean deleteUser(int userId) {
        if(userId<1) return false;
        return userMapper.deleteUser(userId);
    }

    /**
     * 更新用户信息
     * @param user 用户对象
     * @return 真/假
     */
    public boolean updateUser(User user){
        if(user==null||user.getUserId()<0) return false;
        User one = selectByUserName(user.getUserName());
        if((one!=null)&&(!one.getUserId().equals(user.getUserId()))) return false;
        return userMapper.updateUser(user);
    }
}
